"""
提示词数据过滤配置
包含需要被过滤掉的AI提示词示例数据
"""

# 提示词中的船名示例
PROMPT_VESSEL_NAMES = {
    'KMTC POHANG',
    'AS PATRIA', 
    'OOCL AUSTRALIA',
    'WAN HAI 613',
    'WAN HAI 353'
}

# 提示词中的航次示例
PROMPT_VOYAGE_NUMBERS = {
    '2504S',
    '2412S', 
    '24020S',
    'S087',
    'W087'
}

# 提示词中的箱号示例
PROMPT_CONTAINER_NUMBERS = {
    'TEMU8525264',
    'FFAU6119411'
}

# 提示词中的封号示例
PROMPT_SEAL_NUMBERS = {
    'HASHA41847',
    'CNSHK2436365',
    '28844855',
    '0264887'
}

# 提示词中的MBL示例
PROMPT_MBL_NUMBERS = {
    'AMIGL240597415A',
    'OOLU8898091780',
    'KMTCSHAN753208',
    '234745738'
}

# 提示词中的HBL示例
PROMPT_HBL_NUMBERS = {
    'AMIGL240597415A',
    'SS0245BIA24120282',
    'STL24082835'
}

# 所有提示词示例数据的集合（用于快速查找）
ALL_PROMPT_VALUES = (
    PROMPT_VESSEL_NAMES | 
    PROMPT_VOYAGE_NUMBERS | 
    PROMPT_CONTAINER_NUMBERS | 
    PROMPT_SEAL_NUMBERS | 
    PROMPT_MBL_NUMBERS | 
    PROMPT_HBL_NUMBERS
)
'''
    '船名': '',
    '航次': '',
    'ETD': '',
    'ETA': '',
    '提货日期': '',
    'MBL': '',
    'HBL': '',
    'ATD': '',
    '箱号': '',
    '封号': '',
    '进仓时间': '',
    '出库时间': '',
    '进港时间': '',
    'ATA': '',
    '目的港清关完成时间': '',
    '送货时间': '',
    '船公司': ''
'''
# 字段名到提示词数据的映射（用于精确匹配）
FIELD_PROMPT_DATA_MAP = {
    '船名': PROMPT_VESSEL_NAMES,
    '航次': PROMPT_VOYAGE_NUMBERS, 
    '箱号': PROMPT_CONTAINER_NUMBERS,
    '封号': PROMPT_SEAL_NUMBERS,
    'MBL': PROMPT_MBL_NUMBERS,
    'HBL': PROMPT_HBL_NUMBERS,
}

def is_prompt_example_value(field_name, value):
    """
    检查给定字段的值是否为提示词示例数据
    
    Args:
        field_name (str): 字段名
        value (str): 字段值
        
    Returns:
        bool: 如果是提示词示例数据返回True，否则返回False
    """
    if not value or not isinstance(value, str):
        return False
        
    # 去除空格并转换为大写进行比较
    clean_value = value.strip()
    
    # 首先检查是否在所有提示词示例数据中
    if clean_value in {v for v in ALL_PROMPT_VALUES}:
        return True
    
    # 然后检查特定字段的提示词数据
    if field_name in FIELD_PROMPT_DATA_MAP:
        prompt_values = {v for v in FIELD_PROMPT_DATA_MAP[field_name]}
        return clean_value in prompt_values
    else:
        return False